package com.hh.flow.domain;

import com.hh.common.core.domain.BaseEntity;
import com.mybatisflex.annotation.Column;
import com.mybatisflex.annotation.Table;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.validation.constraints.NotBlank;
import java.util.ArrayList;
import java.util.List;

/**
 * 流程结点对象 flow_node
 *
 * @author hh
 * @date 2023-03-29
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Table(value = "flow_node")
public class FlowNode extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /**
     * 结点类型,0开始结点,1中间结点,2结束结点
     */
    private Integer nodeType;
    /**
     * 流程id
     */
    private Long definitionId;
    /**
     * 流程结点名称
     */
    private String nodeName;
    /**
     * 流程结点编码   每个流程的nodeCode是唯一的,即definitionId+nodeCode唯一,在数据库层面做了控制
     */
    @NotBlank(message = "流程结点编码不能为空")
    private String nodeCode;

    /**
     * 角色编码(该结点能被哪些角色审核)
     */
    private String roleCode;

    /**
     * 角色名称
     */
    private String roleName;

    /**
     * 版本
     */
    private String version;

    /**
     * 删除标志（0代表存在 2代表删除）
     */
    @Column(isLogicDelete = true)
    private String delFlag;

    /**
     * 跳转规则描述
     */
    @Column(ignore = true)
    private String skipDescribe;

    /**
     * 跳转条件
     */
    @Column(ignore = true)
    List<FlowSkip> skipList = new ArrayList<>();

}
